第三天我們簡單介紹了處理表格的pandas套件
接下來就要開始對資料進行處理了
我們都知道電腦比起人類來說,最大的優勢就是可以快速的執行相同的操作
因此學會如何對大筆大筆的資料進行重複的操作就是非常關鍵的了
對程式有過一些經驗初學資料的朋友們可能會想到
「啊不就迴圈嗎,這有什麼特別的嗎?」
基本上這樣的想法,對 但也不完全正確
python作為一門沒有那麼底層的語言
相對上它的執行效率是遠不如那些C/C++之類的
其中日常影響最最大的部分就是我們親愛的for
迴圈啦
因此,如果你真的要對資料進行操作的時候
一定要儘量的避免把所有的操作都用for來完成
以下例子我們用經典的鳶尾花(iris)資料集為例
import pandas as pd
df = pd.read_csv("iris.csv")
為了要隨便有個可以做的事情
我們先以將同一筆資料的class label給print出來
# 印出類別
def foo(row):
print("The class is %s" % row["class"])
# 使用for迴圈遍歷
for index,row in df.iterrows():
foo(row)
如果你真的堅持要用迴圈的方式來處理的話
可以對你的DataFrame呼叫.iterrows()
,並且用index
,row
兩個變數去接住它來進行遍歷
# 使用apply遍歷
df.apply(foo, axis = 1)
這邊我們稍微做一下解釋
當我們對一個DataFrame進行apply
操作的時候會需要給它一個方向axis
而處理的過程則可以想像成每次被遍歷的對象作為參數,被後面接著的foo()
函數進行處理
這邊為了要讓結果明顯一點
我將資料進行了重複採樣到50000筆之後分別用兩種方法進行操作
得出的結果如下
這邊要注意這還只是最簡單的一個print而已
如果處理的內容更加複雜的時候,這差距還會更加顯著的拉大
因此,珍愛生命請善用apply